
#ifndef WII_GI_THREAD_H
#define WII_GI_THREAD_H

#include <ogc\lwp.h>

#include "c_Engine.h"
#include "c_Flags.h"

namespace wiigi
{
   
   class c_Thread : private c_Flags< u8 >
   {
      public:
         c_Thread( void );
         
         virtual ~c_Thread()
         {
            return;
         }
         
         e_Status run( void );
         e_Status pause( void );
         
      protected:
         
         virtual void main( void ) = 0;
                     
      private:
         static void* ThreadEntry( void *arg );
      
      private:
         //Flags
         static const u8 d_Running = 0x01;
      
      protected:
         lwp_t  m_Thread;
   };
   
}

#endif //WII_GI_THREAD_H
